package com.zx._01_基础._011_集合;

import java.util.Comparator;
import java.util.SortedSet;
import java.util.TreeSet;
import org.junit.Test;

public class TreeSetTest {

    @Test
    public void test1() {
        TreeSet<String> set = new TreeSet<String>();

        set.add("1");
        set.add("2");
        set.add("3");
        set.add("4");
        set.add("5");

        String first = set.first();//获得第一个插入的元素
        System.out.println(first);

        String last = set.last();//获得最后一个插入的元素
        System.out.println(last);

        String lower = set.lower("3");//获得指定元素的前一个插入的元素
        System.out.println(lower);

        String higher = set.higher("3");//获得指定元素的后一个插入的元素
        System.out.println(higher);

        SortedSet<String> subSet = set.subSet("2", "4");//获得第一个插入的元素（包含），到第二个插入的元素（不包含），之间的元素集合
        System.out.println(subSet);

        SortedSet<String> headSet = set.headSet("3");//获得小于这个元素之前的所有插入的元素（不包含）
        System.out.println(headSet);

        SortedSet<String> tailSet = set.tailSet("3");//获得大于或等于这个元素之前的所有插入的元素（包含）
        System.out.println(tailSet);
    }

    /**
     * 自然排序。无序且不重复。默认根据元素的大小，将他们升序排序
     * 定制排序。自定义排序顺序
     */
    @Test
    public void test2() {
        TreeSet<Integer> set = new TreeSet<Integer>(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return (o1 > o2) ? 1 : -1;
            }
        });
    }
}
